package cn.codingjc.common.util;

import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

/**
 * 对象拷贝类
 * @author codingjc
 * @date 2022-07-01 8:05
 */
public class DeepBeanUtils extends BeanUtils {

    public DeepBeanUtils() {
    }

    /**
     * 数组拷贝
     * @param sources 源对象集合
     * @param target  目标对象集合
     * @param <S>     源对象类型
     * @param <T>     目标对象类型
     * @return        拷贝后的集合
     */
    public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target){
        List<T> list = new ArrayList<>(sources.size());
        for (S source : sources) {
            T obj = target.get();
            copyProperties(source, obj);
            list.add(obj);
        }
        return list;
    }
}
